package com.aibaixun.system.service;

import com.aibaixun.common.core.domain.R;
import com.aibaixun.system.domain.WorkOrderAlarm;
import com.aibaixun.system.domain.dto.WorkOrderAlarmDto;
import com.aibaixun.system.domain.dto.WorkOrderAlarmPageDto;
import com.aibaixun.system.domain.vo.*;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;

import java.util.List;
import java.util.Map;

/**
* @author zhangyh
* @description 针对表【work_order_alarm(工单告警信息表)】的数据库操作Service
* @createDate 2023-09-26 15:53:06
*/
public interface WorkOrderAlarmService extends IService<WorkOrderAlarm> {

    /**
     * 分页
     * @param page
     * @param pageDto
     * @return
     */
    R getPage(Page page, WorkOrderAlarmPageDto pageDto);

    /**
     * 获取各类型数量统计
     * @param dto
     * @return
     */
    R<WorkOrderAlarmStatisticsCountVo> getCountStatisticsType(WorkOrderAlarmDto dto);

    /**
     * 获取微魔方top5统计
     * @param dto
     * @return
     */
    R<List<WorkOrderAlarmStatisticsAddressCountVo>> getCountStatisticsAddress(WorkOrderAlarmDto dto);

    /**
     * 获取告警趋势
     * @param dto
     * @return
     */
    R<List<WorkOrderAlarmStatisticsTrentCountVo>> getCountStatisticsTrend(WorkOrderAlarmDto dto);

    /**
     * 删除告警
     * @param alarmId
     * @return
     */
    R deleteAlarm(Long alarmId);

    /**
     * 获取列表
     * @param dto
     * @return
     */
    R<List<WorkOrderAlarmAllVo>> getList(WorkOrderAlarmDto dto);

    /**
     * 获取工单告警设备信息
     * @param dto
     * @return
     */
    R<List<WorkOrderAlarmDeviceVo>> getOrderAlarmDevice(WorkOrderAlarmDto dto);
}
